package com.core.zyyz.pcmc.service;

import com.core.zyyz.pcmc.domain.PcmcRole;
import com.core.zyyz.pcmc.domain.PcmcRoleUser;
import com.core.zyyz.pcmc.domain.PcmcUser;

import java.util.List;
import java.util.Map;

/**
 * 用户Service接口
 *
 * @author core
 * @date 2024-10-15
 */
public interface PcmcUserService {
    /**
     * 查询用户
     *
     * @param userCode 用户主键
     * @return 用户
     */
    public PcmcUser selectPcmcUserByUserCode(String userCode);

    /**
     * 查询用户列表
     *
     * @param pcmcUser 用户
     * @return 用户集合
     */
    public List<PcmcUser> selectPcmcUserList(PcmcUser pcmcUser);

    /**
     * 新增用户
     *
     * @param pcmcUser 用户
     * @return 结果
     */
    public int insertPcmcUser(PcmcUser pcmcUser) throws Exception;

    /**
     * 修改用户
     *
     * @param pcmcUser 用户
     * @return 结果
     */
    public int updatePcmcUser(PcmcUser pcmcUser);

    /**
     * 批量删除用户
     *
     * @param userCodes 需要删除的用户主键集合
     * @return 结果
     */
    public int deletePcmcUserByUserCodes(String[] userCodes);

    /**
     * 删除用户信息
     *
     * @param userCode 用户主键
     * @return 结果
     */
    public int deletePcmcUserByUserCode(String userCode);

    /**
     * 重置用户密码
     *
     * @param user 用户信息
     * @return 结果
     */
    public int resetPwd(PcmcUser user);

    /**
     *查询用户未授权角色
     * @param
     * @return
     */
    List<PcmcRole> queryUserUnGrantRoleList();
    /**
     *查询用户已授权角色
     * @param param
     * @return
     */
    List<PcmcRole> queryUserGrantRoleList(PcmcRole param);

    /**
     * 用户授权角色
     *
     * @param pcmcRoleUser
     */
    public void insertUserAuth(PcmcRoleUser pcmcRoleUser);

    /**
     * 导入用户数据
     *
     * @param userList 用户数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importUser(List<PcmcUser> userList, Boolean isUpdateSupport, String operName);

    Map<String, String> queryEmployeeNameMap(List<String> paramList);
}
